/* -*-jde-*- */
/* <SortingAlgorithm.java> */
package Practica4.sort;

/**
 * Interfaz que provee los algoritmos a implementar.
 *
 * @author	Peralta Santa Anna Victor Miguel
 * @since	Enero 2012
 */
public interface SortingAlgorithm {

    /**
     * Metodo público que ordena un arreglo de enteros. ( Merge Sort )
     *
     * @param array El arreglo de enteros el cual sera ordenado
     * @return El arreglo ya ordenado
     */
    public int[] mergeSort(int[] array);

    /**
     * Metodo público que ordena un arreglo de enteros. ( Heap Sort )
     *
     * @param array El arreglo de enteros el cual sera ordenado
     * @return El arreglo ya ordenado
     */
    public int[] heapSort(int[] array);

    /**
     * Metodo público que ordena un arreglo de enteros. ( Quick Sort )
     * Tomando el pivote como el elemento de enmedio
     *
     * @param array El arreglo de enteros el cual sera ordenado
     * @return El arreglo ya ordenado
     */
    public int[] quickSortMiddle(int[] array);

    /**
     * Metodo público que ordena un arreglo de enteros. ( Quick Sort )
     * Tomando el pivote con un elemento al azar
     *
     * @param array El arreglo de enteros el cual sera ordenado
     * @return El arreglo ya ordenado
     */
    public int[] quickSortRandom(int[] array);

    /**
     * Metodo público que ordena un arreglo de enteros. ( Quick Sort )
     * Tomando el pivote como la media del primer, ultimo y el elemento de enmedio
     *
     * @param array El arreglo de enteros el cual sera ordenado
     * @return El arreglo ya ordenado
     */
    public int[] quickSortAverage(int[] array);

    /**
     * Metodo público que ordena un arreglo de enteros. ( Local Insertion Sort )
     * @param array El arreglo de enteros el cual sera ordenado
     * @return El arreglo ya ordenado
     */
    public int[] localInsertionSort(int[] array);

    /**
     * Metodo público que ordena un arreglo de enteros. ( Insertion Sort )
     *
     * @param array El arreglo de enteros el cual sera ordenado
     * @return El arreglo ya ordenado
     */
    public int[] insertionSort(int[] array);

    /**
     * Metodo público que ordena un arreglo de enteros. ( Shell Sort )
     *
     * @param array El arreglo de enteros el cual sera ordenado
     * @return El arreglo ya ordenado
     */
    public int[] shellSort(int[] array);
}// SortingAlgorithm

